<?php
/**
 * 
 * @author tangbl
 *
 */
class CommonAction extends Action {

    /**
     * 初始化
     * 子类重写_initialize方法需要调用parent::_initialize();
     */
    public function _initialize() {
    	
    	$t     = C('VAR_TEMPLATE');
		$theme = $this->_param("$t","","");
		if(empty($theme)){//待处理
			$theme = C('DEFAULT_THEME');
		}
		if(!strpos('|'.C('THEME_LIST'),$theme)){
			$theme = C('DEFAULT_THEME');
		}
		cookie('think_template',$theme,3600);
		
		$NOW_THEME_PATH = TMPL_PATH.$theme.'/';
		$NOW_THEME_URL  = TMPL_URL .$theme.'/';
		
		$this->assign('NOW_THEME_PATH',$NOW_THEME_PATH);
		$this->assign('NOW_THEME_URL' ,$NOW_THEME_URL);
		define('NOW_THEME_NAME', $theme);
		
		$value = get_syscfig_key("webname".LANG_SET);
		$this->assign('webname' ,$value);
		
		$value = get_syscfig_key("keywords".LANG_SET);
		$this->assign('keywords' ,$value);
		
		$value = get_syscfig_key("description".LANG_SET);
		$this->assign('description' ,$value);
		
		//获取当前语言版本
		$this->assign("lang",  getLang());
		
		//获取城市列表
		$this->assign("sh",  C("CITY_SHANGHAI"));
		$this->assign("bj",  C("CITY_BEIJING"));
		$this->assign("gz",  C("CITY_GUNAGZHOU"));
		$this->assign("sy",  C("CITY_SHUNYI"));
		
		$this->checkMBAC();
    }
    
    /**
     * 检查数据分享
     * 检查用户权限
     */
    private function checkMBAC(){
    	
    	$fromid = $this->_param("_visitid","","");
    	$dataon = C("DATA_AUTH_ON");
    	$this->checkGuest($dataon,$fromid); //保存游客记录
    	/* */
    	
    	$useron = C("USER_AUTH_ON");
    	import('ORG.Util.MBAC');
    	if ($useron && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
    		MBAC::AccessDecision();
    	}
    }
    
	/**
     * 保存游客记录
     * memberGuestId   被分享者
     * memberGuestSave 是否保存分享日志
     * memberFromId    分享者
     */
	private function checkGuest($dataon,$visitid){
    	
    	if($dataon){
    		
    		$expire  = C("COOKIE_KEEP_TIME");
    		$guestid = cookie("memberGuestId");
    		if(empty($guestid)){
    			$guestid = create_id("G");
    			$expire  = C("COOKIE_KEEP_TIME");
    			cookie("memberGuestId",$guestid,$expire);
    		}
    		
    		if($visitid){
    			if($guestid != $visitid){
    				cookie("memberFromId",$visitid,$expire);
    			}
    		}
    	}
    }
	
	//定义空操作
	public function _empty(){
		$this->error(L('cfg_form_action_noexsits'));
	}
	
    /**
	 * 公共删除方法
	 * @author tangbl
	 * @param  $table 表名
	 * @param  $reply 是否需要更新回复记录
	**/   
	protected function do_del($table){
		$id = I('param.id',0,'');
		if(!$id) $this->error(L('cfg_form_tipmsg_illgel'));
		
		$model   = M("$table");
		$where   = "id in ($id)";
	  //$lists   = $model->where($where)->select();
		$res     = $model->where($where)->delete();
		
		if($res) {
			
			$this->ajaxReturn($res,L('cfg_form_tipmsg_delsucc'),1);
		} else {
			$this->ajaxReturn(0,L('cfg_form_tipmsg_delfail'),0);
		}

    }
	
     /**
	 * 公共添加方法
	 * @author tangbl
	 * @param  $table 表名
	 * @param  $imgae array("single"=>array("single"),"atlas"=>array("atlas"))
	 * @param  $reply 是否需要更新回复记录
	 * @param  $arr   额外的添加参数
	 * @param  $url   自定义跳转路劲數組array("url"=>"Index/index","cateid=1")
	**/ 
    protected function do_add($table,$image=NULL,$arr=NULL,$url=NULL){
        $t = D("$table");
        if($t->create()){
			$solevar = $t->solevar;
			$title   = $t->title;
			if(is_array($image)){
				$single = $image['single'];
				if(is_array($single)){
					foreach($single as $v){
						add_edit_thumb($v, $solevar, $table);//添加缩略图
					}	
				}
				$atlas = $image['atlas'];
				if(is_array($atlas)){
					foreach($atlas as $v){
						add_edit_album($v, $solevar, $table);//添加图集
					}	
				}
			}
			
            if(is_array($arr)){
               foreach($arr as $k=>$v){
                $t->$k=$v;
               }
            }
            $t->addid = session(C('USER_AUTH_KEY'));
            $result   = $t->add();
            if($result){
           		if(is_array($url)){
					$url =U($url['url'],$url['param']);
				}else{
					$url =U($table.'/index');
				}
				$this->assign("jumpUrl",$url);

				$this->success(L('cfg_form_tipmsg_addsucc'));
            }else{
                $this->error(L('cfg_form_tipmsg_addfail'));
            }
        }else{ 
            $this->error($t->getError());
        }
    }
	
	 /**
	 * 公共修改方法
	 * @author tangbl
	 * @param  $table 表名
	 * @param  $imgae array("single"=>array("single"),"atlas"=>array("atlas"))
	 * @param  $reply 是否需要更新回复记录
	 * @param  $arr   额外的修改参数
	 * @param  $url   自定义跳转路劲數組array("url"=>"Index/index","cateid=1")
	**/ 
    protected function do_edit($table,$image=NULL,$arr=NULL,$url){
		$t = D("$table");
		if($t->create()) {
			$solevar = $t->solevar;
			$title   = $t->title;
			if(is_array($image)){
				$single = $image['single'];
				if(is_array($single)){
					foreach($single as $v){
						add_edit_thumb($v, $solevar, $table);//添加缩略图
					}	
				}$atlas = $image['atlas'];
				if(is_array($atlas)){
					foreach($atlas as $v){
						add_edit_album($v, $solevar, $table);//添加图集
					}	
				}
			}
			
            if(is_array($arr)){
               foreach($arr as $k=>$v){
                $t->$k=$v;
               }
            }
			$result = $t->save();
			if(is_array($url)){
				$url =U($url['url'],$url['param']);
			}else{
				$url =U($table.'/index');
			}
			$this->assign("jumpUrl",$url);
			$this->assign("jumpUrl",U('/'.$table.'/index')); 
			$this->success(L('cfg_form_tipmsg_editsucc'));
		}else{
			$this->error($t->getError());
		}
    }
    
    
    /**
     * 模板显示 调用内置的模板引擎显示方法，
     * @param string $charset 输出编码
     * @param string $contentType 输出类型
     * @param string $content 输出内容
     * @param string $prefix 模板缓存前缀
     * @return void
     */
    public function display($templateFile='',$charset='',$contentType='',$content='',$prefix='') {
    
    	$depr          = C('TMPL_FILE_DEPR');
    	$TMPL_LANG_ARR = C('TMPL_LANG_ARR');
    
    	if(empty($templateFile)) {
    		// 如果模板文件名为空 按照默认规则定位
    		$template = MODULE_NAME . $depr . ACTION_NAME;
    	}elseif(strpos('|'.$templateFile,":")){
    		$template = str_replace(':', $depr, $templateFile);
    	}else{
    		$template = MODULE_NAME . $depr .$templateFile;
    	}
    
    	$lang_file = $TMPL_LANG_ARR[LANG_SET];
    	if($lang_file){
    		$LANG_PATH = NOW_THEME_NAME.'/'.$lang_file.'/';
    		$url_suffix = C('TMPL_TEMPLATE_SUFFIX');
    		$tpl_file   = TMPL_PATH.$LANG_PATH.$template.$url_suffix;
    			
    		if(!file_exists($tpl_file)){
    			$lang       = C('DEFAULT_LANG');
    			$lang_file  = $TMPL_LANG_ARR[$lang];
    		}
    		$LANG_PATH = $lang_file.'/';
    	}else{
    		$LANG_PATH = '/';
    	}
    	 
    	$templateFile = $LANG_PATH.$template;
    	$this->view->display($templateFile,$charset,$contentType,$content,$prefix);
    }
    
    /**
     *  获取输出页面内容
     * 调用内置的模板引擎fetch方法，
     * @access protected
     * @param string $templateFile 指定要调用的模板文件
     * 默认为空 由系统自动定位模板文件
     * @param string $content 模板输出内容
     * @param string $prefix 模板缓存前缀* 
     * @return string
     */
	protected function fetch($templateFile='',$content='',$prefix='') {
		
		$depr          = C('TMPL_FILE_DEPR');
		$TMPL_LANG_ARR = C('TMPL_LANG_ARR');
		
		if(empty($templateFile)) {
			// 如果模板文件名为空 按照默认规则定位
			$template = MODULE_NAME . $depr . ACTION_NAME;
		}elseif(strpos('|'.$templateFile,":")){
			$template = str_replace(':', $depr, $templateFile);
		}else{
			$template = MODULE_NAME . $depr .$templateFile;
		}
		
		$lang_file = $TMPL_LANG_ARR[LANG_SET];
		if($lang_file){
			$LANG_PATH = NOW_THEME_NAME.'/'.$lang_file.'/';
			$url_suffix = C('TMPL_TEMPLATE_SUFFIX');
			$tpl_file   = TMPL_PATH.$LANG_PATH.$template.$url_suffix;
			
			if(!file_exists($tpl_file)){
				$lang       = C('DEFAULT_LANG');
				$lang_file  = $TMPL_LANG_ARR[$lang];
			}
			$LANG_PATH = $lang_file.'/';
		}else{
			$LANG_PATH = '/';
		}
		$templateFile = $LANG_PATH.$template;
		
		return $this->view->fetch($templateFile,$content,$prefix);
	}
	
	/**
	 *  获取输出页面内容
	 * 调用内置的模板引擎fetch方法，
	 * @access protected
	 * @param string $templateFile 指定要调用的模板文件
	 * 默认为空 由系统自动定位模板文件
	 * @param string $content 模板输出内容
	 * @param string $prefix 模板缓存前缀*
	 * @return string
	 */
	protected function fetch_1($templateFile='',$content='',$prefix='') {
		
		if(empty($templateFile)) {
			// 如果模板文件名为空 按照默认规则定位
			$template = MODULE_NAME . ACTION_NAME;
		}elseif(strpos('|'.$templateFile,":")){
			$template = str_replace(':', $templateFile);
		}else{
			$template = MODULE_NAME . $templateFile;
		}
		$templateFile = $template;
		return $this->view->fetch($templateFile,$content,$prefix);
	}
    
    /**
     * 操作错误跳转的快捷方法
     * @access protected
     * @param string $message 错误信息
     * @param string $jumpUrl 页面跳转地址
     * @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
     * @return void
     */
    public function error($message='',$jumpUrl='',$ajax=false) {
    	parent::error($message,$jumpUrl,$ajax);
    }
    
    /**
     * 操作成功跳转的快捷方法
     * @access protected
     * @param string $message 提示信息
     * @param string $jumpUrl 页面跳转地址
     * @param mixed $ajax 是否为Ajax方式 当数字时指定跳转时间
     * @return void
     */
    public function success($message='',$jumpUrl='',$ajax=false) {
    	parent::success($message,$jumpUrl,$ajax);
    }
}